
package main.old.new_2023.last.month_9;


import java.util.HashMap;
import java.util.Map;

/**
 * @Description: todo 2240. 买钢笔和铅笔的方案数
 * 给你一个整数 total ，表示你拥有的总钱数。同时给你两个整数 cost1 和 cost2 ，分别表示一支钢笔和一支铅笔的价格。
 * 你可以花费你部分或者全部的钱，去买任意数目的两种笔。
 * 请你返回购买钢笔和铅笔的 不同方案数目 。
 *
 * todo 1137. 第 N 个泰波那契数
 * 泰波那契序列 Tn 定义如下：
 * T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2
 * 给你整数 n，请返回第 n 个泰波那契数 Tn 的值。
 *
 * @Author: Take-off
 * @Date: 1:00 PM 2023/6/
 * @Param:
 * @return:
 **/
public class Solution0901 {

    //第 N 个泰波那契数
    public static Map<Integer,Integer> map = new HashMap<>();
    public int tribonacci(int n) {
        map.put(0,0);
        map.put(1,1);
        map.put(2,1);
        if (n >=3){
            for (int i = 3;i<=n;i++){
                map.put(i, map.get(i-3) + map.get(i-2) + map.get(i-1));
            }
        }
        return map.get(n);
    }

    //买钢笔和铅笔的方案数
    public long waysToBuyPensPencils(int total, int cost1, int cost2) {
        //假设cos1 > cost2
        if (cost1 < cost2){
            waysToBuyPensPencils(total,cost2,cost1);
        }
        int count = 0;
        long sum = 0;
        while (total - count * cost1 >= 0){
            int balance = total - count * cost1;
            int temp = balance / cost2;
            sum = sum + (long)temp + 1L;
            count++;
        }
        return sum;
    }

}
